package util;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Config类用于读取配置文件，只有一个静态方法，在主函数中提供了使用样例
 * 遍历配置文件，将每个以":"结尾的字符串定义为一个Map<String, List<String>>的key,<br>
 *     并将在遇到下一个以":"结尾的字符串之前的字符串放入其Value的List<String>中
 */
public class Config {
    public static Map<String, List<String>> getConfig(String file) {
        List<String> lineList = IO.fileToStringList(file, StandardCharsets.UTF_8);
        Map<String, List<String>> configMap = new HashMap<>();
        String key = "default";
        configMap.put(key, new ArrayList<>());
        for (String line : lineList) {
            line = line.trim();
            if (line.isEmpty()) {
                continue;
            }
            if (line.endsWith(":")) {
                line = line.replace(":", "");
                if (!configMap.containsKey(line)) {
                    configMap.put(line, new ArrayList<>());
                }
                key = line;
            } else {
                configMap.get(key).add(line);
            }
        }
        return configMap;
    }

    public static void main(String[] args) {
        // 测试
        // javac -cp src/ -d dist/ src/util/Config.java
        // java -cp dist/ util.Config config.txt
        String file = args[0];
        Map<String, List<String>> configMap = Config.getConfig(file);
        System.out.println(configMap);
    }
}
